﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sistema.Modelo;
using Sistema.Dao;
using System.Data.SqlClient;
using Sistema.Visao.Pessoa.Cidade;
using Sistema.Visao.Pessoa.Bairro;

namespace Sistema.Visao.Pessoa.Endereço
{//abre o namespace
    public partial class dataEndereco : Form
    {//abre o form 
        //construtor padrao 
        public dataEndereco()
        {
            InitializeComponent();
        }

        //variaveis globais
        EnderecoMod mod = new EnderecoMod();// variavel da classe modelo
        EnderecoDao dao = new EnderecoDao();// variavel da classe dao
        CidadeDao daoc = new CidadeDao();// variavel da classe dao
        BairroDao daob = new BairroDao();// variavel da classe dao
        formEndereco endereco;
        Boolean op,opcao;
        int opcao2,codEndereco,codCidade,codBairro;
        string EnderecoNome,Cep,logradouroNome,Endereco,enderecoCompleto;

        //construtor lincado com formEndereco cadastro
         public dataEndereco(formEndereco aux, Boolean auxiliar)
        {
            InitializeComponent();
            endereco = aux;
            op = auxiliar;

        }
         //construtor lincado com formEndereco alteração
         public dataEndereco(formEndereco formEndere, Boolean TipoCadastro, string nomeEndereco, int codigoEndereco, string cep, int codigoCidade, int codigoBairro, string logradouro, string enderecoCompletoaux)
        {
            InitializeComponent();
            endereco = formEndere;
            op = TipoCadastro;
            EnderecoNome = nomeEndereco;
            codEndereco = codigoEndereco;
            Cep = cep;
            codCidade = codigoCidade;
            codBairro = codigoBairro;
            logradouroNome = logradouro;
            enderecoCompleto = enderecoCompletoaux;
            MessageBox.Show(Cep);
        }

        //atualiza o combobox da cidade
         public void atualizaComboCidade(int Selecao, String Busca)
         {//abre combocidade
             daoc.SelecionarCidade(Busca, Selecao);
             SqlDataAdapter i = daoc.getSelect();
             DataTable da = new DataTable();
             i.Fill(da);

             cbCodigoCidade.DataSource = da;
             cbCodigoCidade.DisplayMember = "Cidade_Codigo";
             cbCodigoCidade.ValueMember = "Cidade_Codigo";


             cbCidade.DataSource = da;
             cbCidade.DisplayMember = "Cidade_Nome";
             cbCidade.ValueMember = "Cidade_Nome";
             tbCidade.Text = cbCidade.Text;
         }//fecha combo cidade

         public void atualizaComboBairro(int Selecao, String Busca)
         {//abre comboBairro

             daob.SelecionarBairro(Busca, Selecao);
             SqlDataAdapter i = daob.getSelect();
             DataTable da = new DataTable();
             i.Fill(da);

             cbCodigoBairro.DataSource = da;
             cbCodigoBairro.DisplayMember = "Bairro_Codigo";
             cbCodigoBairro.ValueMember = "Bairro_Codigo";


             cbBairro.DataSource = da;
             cbBairro.DisplayMember = "Bairro_Nome";
             cbBairro.ValueMember = "Bairro_Nome";
             tbBairro.Text = cbBairro.Text;


         }//fecha combo
        private void dataEndereco_Load(object sender, EventArgs e)
        {//abre o load
            tbCidade.BackColor = Color.White;
            tbBairro.BackColor = Color.White;
            if (op == true)//opção de cadastro
            {//abre o if
                atualizaComboCidade(0, "");
                atualizaComboBairro(0, "");
            }//fecha o if
            else
            {//abre o else
                atualizaComboCidade(5, Convert.ToString(codCidade));
                atualizaComboBairro(4, Convert.ToString(codBairro));
                tbEndereco.Text = EnderecoNome;
                mtbCep.Text = Cep; 
                cbLogradouro.Text = logradouroNome;
                tbEndereCompleto.Text = enderecoCompleto;
                tbEndereco.Text = EnderecoNome;
                
            }//fecha o else

            cbLogradouro.SelectedIndex = 0;
        }//fecha o load

        private void button1_Click(object sender, EventArgs e)
        {
            if (op == true)//Cadastro
            {//if de cadastro

                DialogResult Result = MessageBox.Show("Tem certeza que deseja cadastrar o Endereço " + tbEndereco.Text, "Cadastro de Endereços", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (Result == DialogResult.Yes)
                {//abre o if do Tem certeza que deseja cadastrar
                    mod.Endereco_CEP = mtbCep.Text;
                    mod.Cidade_Codigo = Convert.ToInt32(cbCodigoCidade.Text);
                    mod.Bairro_Codigo = Convert.ToInt32(cbCodigoBairro.Text);
                    mod.Endereco_Logradouro = cbLogradouro.Text;
                    mod.Endereco_Nome = tbEndereco.Text;
                    mod.Endereco_Nome_Completo = tbEndereCompleto.Text;
                    dao.ExecutarProcedimentoEndereco(mod, 1); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                    MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados

                    //message para perguntar se que um novo cadastro
                    DialogResult ResultNovoCadastro = MessageBox.Show("Gostaria de fazer outro cadastro", "Cadastro de Endereços", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    // se responder sim, fazer novo cadastro
                    if (ResultNovoCadastro == DialogResult.Yes)
                    {//abre o if novo cadastro
                        mtbCep.Clear();
                        tbCidade.Clear();
                        tbBairro.Clear();
                        tbEndereco.Clear();
                        tbEndereCompleto.Clear();
                    }//fecha o if novo cadastro
                    // se responder nao, sair do form
                    else if (ResultNovoCadastro == DialogResult.No)
                    {//else if novo cadastro

                        endereco.AtualizarGrid(0, "");
                        endereco.pegadados();
                        this.Hide();
                    }//fecha o else if novo cadastro

                }//fecha if
            }
            else
            {//abre else
                mod.Endereco_Codigo = codEndereco;
                mod.Endereco_CEP = mtbCep.Text;
                mod.Cidade_Codigo = Convert.ToInt32(cbCodigoCidade.Text);
                mod.Bairro_Codigo = Convert.ToInt32(cbCodigoBairro.Text);
                mod.Endereco_Logradouro = cbLogradouro.Text;
                mod.Endereco_Nome = tbEndereco.Text;
                mod.Endereco_Nome_Completo = tbEndereCompleto.Text;
                dao.ExecutarProcedimentoEndereco(mod, 2); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
                endereco.AtualizarGrid(0, "");
                endereco.pegadados();
                this.Hide();
            }//fecha else
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int op = 2;
            formCidade vai = new formCidade(this, op);
            vai.ShowDialog();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            int opcao = 1;
            Boolean qualform = false;
            formBairro vai = new formBairro(this,qualform,opcao);
            vai.ShowDialog();
        }

        private void btSair_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void tbCidade_MouseClick(object sender, MouseEventArgs e)
        {
            int op = 2;
            formCidade vai = new formCidade(this, op);
            vai.ShowDialog();
        }

        private void tbBairro_MouseClick(object sender, MouseEventArgs e)
        {
            int opcao = 1;
            Boolean qualform = false;
            formBairro vai = new formBairro(this, qualform, opcao);
            vai.ShowDialog();
        }
    }//fecha o form
}//fecha o namespace
